#ifndef FLOATTEXTEDIT_H
#define FLOATTEXTEDIT_H
// 上下文防卫宏，防止头文件被多次包含引起重复定义错误

#include <QWidget>       // QWidget 是所有 Qt GUI 控件的基类
#include <QTextEdit>     // QTextEdit 提供多行文本编辑功能
#include <QPushButton>   // QPushButton 提供按钮控件
#include <QLabel>        // QLabel 用于显示文本标签
#include <QVBoxLayout>   // QVBoxLayout 提供纵向布局管理器

// 自定义控件类 FloatTextEdit，继承自 QWidget
// 用于实现一个可浮动/回位的 QTextEdit
class FloatTextEdit : public QWidget
{
Q_OBJECT  // Qt 宏，启用信号与槽机制

public:
    // 构造函数，允许设置父控件
    explicit FloatTextEdit(QWidget *parent = nullptr);

private slots:
    // 私有槽函数，用于实现浮动/回位的逻辑
    void toggleFloating();

private:
    QLabel *label;           // 显示说明文本，如“文本设置-结果展示”
    QTextEdit *textEditor;   // 多行文本编辑器，用于输入或显示文本
    QPushButton *btnToggle;  // 点击按钮触发浮动/回位操作

    bool floating;           // 记录当前是否处于浮动状态
    QWidget *floatingWindow; // 浮动窗口指针，浮动时 QTextEdit 会被放入该窗口
    QVBoxLayout *mainLayout; // 保存原布局，回位时恢复 QTextEdit 所在的布局
};

#endif // FLOATTEXTEDIT_H
